package CH7.异常演示;



import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class ExcepDemo1 {
    public static void main(String[] args) throws ParseException {
        demo1();
        demo2();
        demo3();

        int[] arr = null;
        //int[] arr = new int[3];
        try{
            Print(arr,-1);
        }catch (NullPointerException e){
            System.out.println( e.getMessage());
        }catch (ArrayIndexOutOfBoundsException e){
            //*e.printStackTrace();*//*
            System.out.println("**************");
            System.out.println( e.getMessage());
        }catch (RuntimeException e){
            System.out.println( e.getMessage());
        }
        /**/
    }
    public static void demo1() {
//         int[] arr = new int[1024*1024*1024];//OutOfMemoryError，4G的空间
       int[] arr = new int[1024*1024];//Error只能改代码，4M的空间
        System.out.println("demo1()");
    }
    public static void demo2() /* throws NumberFormatException*/{
        int m = 0;
        try{//运行时异常，可处理也可不处理,
//            不处理时默认交给JVM处理(打印异常对象,中断程序)
            m = Integer.parseInt("88");
          }catch(NumberFormatException e) {
             System.out.println("发生异常:"+e.getMessage());
         }
        System.out.println("m="+m);
    }
    public static void demo3()  throws ParseException{
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");//用来格式化日期
        Date date = null;
         //try {//编译异常，程序员若不处理，则无法编译
            date = sdf.parse("1999-09-09");//把字符串格式的日期解析为Date格式的日期
         //} catch (ParseException e) {
         //    e.printStackTrace();
         //}
        System.out.println(date);
    }

    public static void Print(int[] arr,int i) {
        if(null==arr)
            throw new NullPointerException("空指针错误");
        if(i<0 ||i>=arr.length)//一个方法内部可用多个throw语句来抛出多个异常
            throw new ArrayIndexOutOfBoundsException("索引超界");
//            throw new FileNotFoundException("文件找不到");//若是编译异常，则必须处理
        System.out.println(arr[i]);
    }

}



